#ifndef CONSTRUITREPRESENTATIONMONSTRE_HPP
#define CONSTRUITREPRESENTATIONMONSTRE_HPP

// Créé avec XmlCppClassGenerator version 2.0 beta.

#include "BaseConstruitRepresentation.hpp"
#include "XmlInfo/XmlInfoMonstre.hpp"

#include <QtCore/QHash>

/** Classe permettant de construire des instances de @c XmlInfoMonstre depuis le
  * contenu du fichier monsters.xml.
  * La classe donne accès à un QHash liant un \c id de monstre avec une instance
  * de XmlInfoMonstre. Ce conteneur est construit à partir du fichier
  * monsterss.xml, qui est téléchargé. Le travail de création est effectué par
  * la méthode construitInfoMonstres, appelée depuis le slot
  * construitInfoInstance.
  *
  * @author Johan "Solo" Luisier
  * @date Mai 2012
  */
class ConstruitRepresentationMonstre : public BaseConstruitRepresentation
{
Q_OBJECT
public:
  /** Constructeur
   * Initialise la classe mère le QHash InfosMonstres.
   *
   * @param[in] agence nom de l'agence.
   * @param[in] mdp mot de passe API.
   * @param[in] contenu type de contenu à télécharger (ici "monsters").
   * @param parent pointeur sur le QObject parent.
   */
  ConstruitRepresentationMonstre( const QString& agence, const QString& mdp,
                                  const QString& contenu, QObject* parent = 0 );
  /** Destructeur.
   * Le destructeur n'a rien de spécial à faire.
   */
  virtual ~ConstruitRepresentationMonstre();
  /** Méthode qui effectue le traitement des données.
   * Les données sont téléchargées, interprétées et récupérées dans une instance
   * de \c StructureDonnees.
   *
   * @param[in] nomSyndicat nom du syndicat (non utilisé ici).
   */
  void chargeInformations( const QString& nomSyndicat = QString() );
  /** Permet d'accéder à InfosMonstres.
    *
    * @return une référence constante sur InfosMonstres.
    */
  const QHash< unsigned, XmlInfoMonstre* >& infosMonstres() const;
  /** Permet de récupérer un pointeur sur InfosMonstres.
    *
    * @return l'addresse de InfosMonstres.
    */
  const QHash< unsigned, XmlInfoMonstre* >* infosMonstresPtr() const;
  protected:
  /** Membre qui contient les données des différents monstress engagés.
   * Les données sont indexées par l'identification du monstre.
   */
  QHash< unsigned, XmlInfoMonstre* > InfosMonstres;
  protected slots:
  /**
   *
   *
   * @param info 
   */
  void construitInfoInstance( const StructureDonnees* info );
  /** Méthode qui permet de construire les instances de \c XmlInfoMonstre depuis
   * le conteneur \c infos.
   * La méthode efface toute information déjà contenue dans le QHash avant
   * de créer de nouvelles instances depuis zéro.
   *
   * @param info pointeur sur le conteneur des informations récupérées
   * depuis le fichier téléchargé.
   */
  void construitInfoMonstres( const StructureDonnees* info );
};


#endif // CONSTRUITREPRESENTATIONMONSTRE_HPP
